﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
using DTO;

namespace DoAn
{
    public partial class frGiaoDienChinh : Form
    {
        Button btnRefresh, btnThem, btnTim, btnSua, btnXoa, btnXem;
        public frGiaoDienChinh()
        {
            InitializeComponent();
            this.WindowState = FormWindowState.Maximized;
            GiaoDienChung();
            HangHoa_GUI();
            XuatHangHoa();
        }
        private void thoátToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Hide();
        }
        private void GiaoDienChung()
        {
            btnRefresh = new Button();
            btnThem = new Button();
            btnTim = new Button();
            btnSua = new Button();
            btnXem = new Button();
            btnXoa = new Button();
            btnRefresh.Width = btnThem.Width = btnTim.Width = btnSua.Width = btnXoa.Width = btnXem.Width = 90;
            btnRefresh.Height = btnThem.Height = btnTim.Height = btnSua.Height = btnXoa.Height = btnXem.Height = 23;
            btnRefresh.Top = btnThem.Top = btnTim.Top = btnSua.Top = btnXoa.Top = btnXem.Top = 80;
            btnRefresh.Left = 20;
            btnThem.Left = 120;
            btnTim.Left = 220;
            btnXem.Left = 320;
            btnSua.Left = 420;
            btnXoa.Left = 520;

            this.Controls.Add(btnRefresh);
            this.Controls.Add(btnThem);
            this.Controls.Add(btnTim);
            this.Controls.Add(btnXem);
            this.Controls.Add(btnSua);
            this.Controls.Add(btnXoa);
        }
        private void HangHoa_GUI()
        {
            lbTieuDe.Text = "Quản lý hàng hóa";

            btnRefresh.Name = "btnRefresh";
            btnRefresh.Text = "Refresh";
            btnRefresh.Click += (s, args) =>
            {
                XuatHangHoa();
            };

            btnThem.Name = "btnThemHangHoa";
            btnThem.Text = "Thêm hàng hóa";
            btnThem.Click += (s, args) =>
            {
                frThemHang frth = new frThemHang();
                if (frth.ShowDialog() == DialogResult.Cancel)
                    XuatHangHoa();
            };

            btnTim.Name = "btnTimHangHoa";
            btnTim.Text = "Tìm hàng hóa";
            btnTim.Click += (s, args) =>
            {
                MessageBox.Show("Tìm thấy rồi.");
            };

            btnSua.Name = "btnSua";
            btnSua.Text = "Cập nhật";
            btnSua.Click += (s, args) =>
            {
                if (gvChinh.CurrentRow == null)
                    MessageBox.Show("Bạn chưa chọn hàng hóa cần thay đổi.");
                else
                {
                    frmSuaHang frsua = new frmSuaHang(gvChinh.CurrentRow.Cells[1].Value.ToString());
                    if (frsua.ShowDialog() == DialogResult.Cancel)
                        XuatHangHoa();
                }
            };

            btnXem.Name = "btnXem";
            btnXem.Text = "Xem chi tiết";
            btnXem.Click += (s, args) =>
            {
                if (gvChinh.CurrentRow == null)
                    MessageBox.Show("Bạn chưa chọn hàng hóa cần thay đổi.");
                else
                {
                    frXemHang frxem = new frXemHang(gvChinh.CurrentRow.Cells[1].Value.ToString());
                    frxem.ShowDialog();
                }
            };
            btnXoa.Name = "btnXoa";
            btnXoa.Text = "Xóa hàng hóa";
            btnXoa.Click += (s, args) =>
            {
                if (gvChinh.CurrentRow == null)
                    MessageBox.Show("Bạn chưa chọn hàng hóa cần thay đổi.");
                else
                {
                    string MaHang = gvChinh.CurrentRow.Cells[1].Value.ToString();
                    DialogResult kq = MessageBox.Show("Bạn có muốn xóa: " + MaHang, "Thông báo", MessageBoxButtons.YesNo);
                    if (kq == DialogResult.Yes)
                    {
                        HangHoaBUS hh = new HangHoaBUS();
                        hh.XoaHangHoa(MaHang);
                        XuatHangHoa();
                    }
                }
            };

            var stt = new DataGridViewTextBoxColumn();
            stt.HeaderText = "STT";
            stt.Name = "clStt";
            stt.Width = 50;

            var maHang = new DataGridViewTextBoxColumn();
            maHang.HeaderText = "Mã Hàng";
            maHang.Name = "clMaHang";
            maHang.Width = 80;

            var tenHang = new DataGridViewTextBoxColumn();
            tenHang.HeaderText = "Tên Hàng";
            tenHang.Name = "clTenHang";
            tenHang.Width = 400;

            var loaiHang = new DataGridViewTextBoxColumn();
            loaiHang.HeaderText = "Loại Hàng";
            loaiHang.Name = "clLoaiHang";
            loaiHang.Width = 200;

            var nhaCC = new DataGridViewTextBoxColumn();
            nhaCC.HeaderText = "Nhà Cung Cấp";
            nhaCC.Name = "clNhaCC";
            nhaCC.Width = 200;

            var soLuong = new DataGridViewTextBoxColumn();
            soLuong.HeaderText = "Số Lượng";
            soLuong.Name = "clSoLuong";
            soLuong.Width = 80;
            gvChinh.Columns.AddRange(new DataGridViewColumn[] { stt, maHang, tenHang, loaiHang, nhaCC, soLuong });
        }

        private void Refresh_GiaoDien()
        {
            this.Controls.Remove(btnRefresh);
            this.Controls.Remove(btnSua);
            this.Controls.Remove(btnThem);
            this.Controls.Remove(btnTim);
            this.Controls.Remove(btnXem);
            this.Controls.Remove(btnXoa);
            gvChinh.Columns.Clear();
        }
        private void XuatHangHoa()
        {
            HangHoaBUS hh = new HangHoaBUS();
            List<HangHoaDTO> listhh = hh.LayHangHoa();
            gvChinh.Rows.Clear();
            for (int i = 0; i < listhh.Count; i++)
            {
                LoaiHangDTO lh = new LoaiHangDTO();
                LoaiHangBUS lhbus = new LoaiHangBUS();
                lh = lhbus.LayLoaiHangTheoMa(listhh[i].MaLoaiHang);

                NhaCCDTO ncc = new NhaCCDTO();
                NhaCCBUS nccbus = new NhaCCBUS();
                ncc = nccbus.LayNCCTheoMa(listhh[i].MaNCC);
                gvChinh.Rows.Add(i + 1, listhh[i].MaHang, listhh[i].TenHang, lh.TenLoaiHang, ncc.TenNCC, listhh[i].SoLuong);
            }
        }

        private void loạiHàngToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frCDLoaiHang cdlh = new frCDLoaiHang();
            cdlh.ShowDialog();
        }

        private void nhàCungCấpToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frCDNhaCC frNhaCC = new frCDNhaCC();
            frNhaCC.ShowDialog();
        }

        private void hàngHóaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Refresh_GiaoDien();
            GiaoDienChung();
            HangHoa_GUI();
            XuatHangHoa();
        }

        private void hìnhThứcThanhToánToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frCDHTTT httt = new frCDHTTT();
            httt.ShowDialog();
        }

        private void HoaDon_GUI()
        {
            lbTieuDe.Text = "Quản lý hóa đơn";

            btnRefresh.Name = "btnRefresh";
            btnRefresh.Text = "Refresh";
            btnRefresh.Click += (s, args) =>
            {
                XuatHoaDon();
            };

            btnThem.Name = "btnThemHoaDon";
            btnThem.Text = "Thêm hóa đơn";
            btnThem.Click += (s, args) =>
            {
                DialogResult result = DialogResult.OK;
                while (result == DialogResult.OK)
                {
                    XuatHoaDon();
                    frThemHoaDon frthemhd = new frThemHoaDon();
                    result = frthemhd.ShowDialog();                                                            
                }
                if (result == DialogResult.Cancel)
                    XuatHoaDon();
            };

            btnTim.Name = "btnTimHoaDon";
            btnTim.Text = "Tìm hóa đơn";
            btnTim.Click += (s, args) =>
            {
                MessageBox.Show("Tìm thấy rồi.");
            };

            btnSua.Name = "btnSua";
            btnSua.Text = "Cập nhật";
            btnSua.Click += (s, args) =>
            {
                if (gvChinh.CurrentRow == null)
                    MessageBox.Show("Bạn chưa chọn hóa đơn muốn xem.", "Lỗi");
                else
                {
                    frSuaHD frsua = new frSuaHD(gvChinh.CurrentRow.Cells[1].Value.ToString());
                    if (frsua.ShowDialog() == DialogResult.Cancel)
                        XuatHoaDon();
                }
            };

            btnXem.Name = "btnXem";
            btnXem.Text = "Xem chi tiết";
            btnXem.Click += (s, args) =>
            {
                if (gvChinh.CurrentRow == null)
                    MessageBox.Show("Bạn chưa chọn hóa đơn muốn xem.", "Lỗi");
                else
                {
                    string MaHD = gvChinh.CurrentRow.Cells[1].Value.ToString();
                    frXemHoaDon frxem = new frXemHoaDon(MaHD);
                    DialogResult result = frxem.ShowDialog();
                    if (result == DialogResult.OK)
                    {
                        frSuaHD frsua = new frSuaHD(gvChinh.CurrentRow.Cells[1].Value.ToString());
                        if (frsua.ShowDialog() == DialogResult.Cancel)
                            XuatHoaDon();
                    }
                    else if (result == DialogResult.Yes)
                    {                        
                        DialogResult kq = MessageBox.Show("Bạn có muốn xóa hóa đơn: " + MaHD, "Thông báo", MessageBoxButtons.YesNo);
                        if (kq == DialogResult.Yes)
                        {
                            HoaDonBUS hh = new HoaDonBUS();
                            hh.XoaHoaDon(MaHD);
                            XuatHoaDon();
                        }
                    }
                }
            };
            btnXoa.Name = "btnXoa";
            btnXoa.Text = "Xóa hóa đơn";
            btnXoa.Click += (s, args) =>
            {
                string MaHD = gvChinh.CurrentRow.Cells[1].Value.ToString();
                DialogResult kq = MessageBox.Show("Bạn có muốn xóa hóa đơn: " + MaHD, "Thông báo", MessageBoxButtons.YesNo);
                if (kq == DialogResult.Yes)
                {
                    HoaDonBUS hh = new HoaDonBUS();
                    hh.XoaHoaDon(MaHD);
                    XuatHoaDon();
                }
            };

            var stt = new DataGridViewTextBoxColumn();
            stt.HeaderText = "STT";
            stt.Name = "clStt";
            stt.Width = 50;

            var maHD = new DataGridViewTextBoxColumn();
            maHD.HeaderText = "Mã HD";
            maHD.Name = "clMaHoaDon";
            maHD.Width = 80;

            var TenNV = new DataGridViewTextBoxColumn();
            TenNV.HeaderText = "Nhân viên ghi";
            TenNV.Name = "clNhanVien";
            TenNV.Width = 200;

            var TenKH = new DataGridViewTextBoxColumn();
            TenKH.HeaderText = "Khách hàng nhận";
            TenKH.Name = "clKhachHang";
            TenKH.Width = 200;

            var MaPX = new DataGridViewTextBoxColumn();
            MaPX.HeaderText = "Số phiếu xuất";
            MaPX.Name = "clSoPX";
            MaPX.Width = 200;

            var NgayTT = new DataGridViewTextBoxColumn();
            NgayTT.HeaderText = "Ngày thanh toán";
            NgayTT.Name = "clNgayThanhToan";
            NgayTT.Width = 200;

            var HTTT = new DataGridViewTextBoxColumn();
            HTTT.HeaderText = "Hình thức thanh toán";
            HTTT.Name = "clHTTT";
            HTTT.Width = 200;

            var TongGT = new DataGridViewTextBoxColumn();
            TongGT.HeaderText = "Tổng giá trị";
            TongGT.Name = "clTongGiaTri";
            TongGT.Width = 150;

            var GhiChu = new DataGridViewTextBoxColumn();
            GhiChu.HeaderText = "Ghi chú";
            GhiChu.Name = "clGhiChu";
            GhiChu.Width = 200;
            gvChinh.Columns.AddRange(new DataGridViewColumn[] { stt, maHD, TenNV, TenKH, MaPX, NgayTT, HTTT, TongGT, GhiChu });
        }

        private void XuatHoaDon()
        {
            HoaDonBUS bus = new HoaDonBUS();
            List<HoaDonDTO> list = new List<HoaDonDTO>();
            list = bus.LayHoaDon();
            gvChinh.Rows.Clear();
            for (int i = 0; i < list.Count; i++)
            {
                string kh, nv, httt;
                KhachHangBUS khbus = new KhachHangBUS();
                kh = khbus.LayKhachTheoMa(list[i].MaKH).MaVaTen;
                NhanVienBUS nvbus = new NhanVienBUS();
                nv = nvbus.Laynvtheoma(list[i].MaNV).MaVaTen;
                HTTTBUS htt = new HTTTBUS();
                httt = htt.LayHTTTTheoMa(list[i].MaHTTT).TenHTTT;
                gvChinh.Rows.Add(i + 1, list[i].MaHoaDon, nv, kh, list[i].SoPhieuXuat, list[i].NgayThanhToan, httt,list[i].TongGiaTri, list[i].GhiChu);
            }
        }

        private void hóaĐơnToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Refresh_GiaoDien();
            GiaoDienChung();
            HoaDon_GUI();
            XuatHoaDon();
        }

        private void Xuatnhanvien()
        {
            NhanVienBUS bus = new NhanVienBUS();
            List<NhanVienDTO> ds = bus.LayDSNV();
            gvChinh.Rows.Clear();
            for (int i = 0; i < ds.Count(); i++)
            {

                gvChinh.Rows.Add(ds[i].MaNV, ds[i].TenNV, ds[i].DienThoai, ds[i].NgaySinh, ds[i].GioiTinh, ds[i].MaBoPhan, ds[i].DiaChi, ds[i].Luong);
            }
        }


        private void quảnLýNhânViênToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Refresh_GiaoDien();
            GiaoDienChung();

            lbTieuDe.Text = "Quản lý nhân viên";

            btnRefresh.Name = "btnRefresh";
            btnRefresh.Text = "Refresh";
            btnRefresh.Click += (s, args) =>
            {
                Xuatnhanvien();
            };

            btnThem.Name = "btnThemNhanVien";
            btnThem.Text = "Thêm nhân viên";
            btnThem.Click += (s, args) =>
            {
                frthemnhanvien frth = new frthemnhanvien();
                if (frth.ShowDialog() == DialogResult.Cancel)
                    Xuatnhanvien();
            };

            btnTim.Name = "btnTimNhanVien";
            btnTim.Text = "Tìm nhân viên";
            btnTim.Click += (s, args) =>
            {
                frTimnv frtim = new frTimnv();
                frtim.ShowDialog();

            };

            btnSua.Name = "btnSua";
            btnSua.Text = "Cập nhật";
            btnSua.Click += (s, args) =>
            {
                frcapnhatNV frsua = new frcapnhatNV(gvChinh.CurrentRow.Cells[0].Value.ToString());
                if (frsua.ShowDialog() == DialogResult.Cancel)
                    Xuatnhanvien();
            };

            btnXem.Name = "btnXem";
            btnXem.Text = "Xem chi tiết";
            btnXem.Click += (s, args) =>
            {
                frXemHang frxem = new frXemHang(gvChinh.CurrentRow.Cells[1].Value.ToString());
                frxem.ShowDialog();
            };
            btnXoa.Name = "btnXoa";
            btnXoa.Text = "Xóa Nhân viên";
            btnXoa.Click += (s, args) =>
            {
                string MaHang = gvChinh.CurrentRow.Cells[1].Value.ToString();
                DialogResult kq = MessageBox.Show("Bạn có muốn xóa: " + MaHang, "Thông báo", MessageBoxButtons.YesNo);
                if (kq == DialogResult.Yes)
                {
                    HangHoaBUS hh = new HangHoaBUS();
                    hh.XoaHangHoa(MaHang);
                    XuatHangHoa();
                }
            };

            var MaNV = new DataGridViewTextBoxColumn();
            MaNV.HeaderText = "Mã nhân viên";
            MaNV.Name = "clMaNV";
            MaNV.Width = 80;

            var TenNV = new DataGridViewTextBoxColumn();
            TenNV.HeaderText = "Tên nhân viên";
            TenNV.Name = "clTenNV";
            TenNV.Width = 200;

            var DienThoai = new DataGridViewTextBoxColumn();
            DienThoai.HeaderText = "Điện Thoại";
            DienThoai.Name = "clDienThoai";
            DienThoai.Width = 100;

            var NgaySinh = new DataGridViewTextBoxColumn();
            NgaySinh.HeaderText = "Ngày Sinh";
            NgaySinh.Name = "clNgaySinh";
            NgaySinh.Width = 100;

            var GioiTinh = new DataGridViewTextBoxColumn();
            GioiTinh.HeaderText = "Giới Tính";
            GioiTinh.Name = "clGioiTinh";
            GioiTinh.Width = 80;

            var BoPhan = new DataGridViewTextBoxColumn();
            BoPhan.HeaderText = "Bộ Phận";
            BoPhan.Name = "clBoPhan";
            BoPhan.Width = 100;

            var DiaChi = new DataGridViewTextBoxColumn();
            DiaChi.HeaderText = "Địa Chỉ";
            DiaChi.Name = "clDiaChi";
            DiaChi.Width = 200;

            var Luong = new DataGridViewTextBoxColumn();
            Luong.HeaderText = "Luong";
            Luong.Name = "clLuong";
            Luong.Width = 100;

            gvChinh.Columns.AddRange(new DataGridViewColumn[] { MaNV, TenNV, DienThoai, NgaySinh, GioiTinh, BoPhan, DiaChi, Luong });
            Xuatnhanvien();

        }

        private void XuatKhachHang()
        {
            KhachHangBUS kh = new KhachHangBUS();
            List<KhachHangDTO> listkh = kh.LayKhachHang();
            gvChinh.Rows.Clear();
            for (int i = 0; i < listkh.Count; i++)
            {

                gvChinh.Rows.Add(listkh[i].MaKH, listkh[i].TenKH, listkh[i].TenCongTy, listkh[i].MaSoThue, listkh[i].DiaChi, listkh[i].DienThoai, listkh[i].Fax, listkh[i].Email);
            }
        }

        private void quảnLýKháchHàngToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Refresh_GiaoDien();
            GiaoDienChung();
            lbTieuDe.Text = "Quản lý Khách Hàng";
            btnRefresh.Name = "btnRefresh";
            btnRefresh.Text = "Refresh";
            btnRefresh.Click += (s, args) =>
            {
                XuatKhachHang();
            };

            btnThem.Name = "btnThemKhachHang";
            btnThem.Text = "Thêm Khách Hàng";
            btnThem.Click += (s, args) =>
            {
                frThemKhachHang frth = new frThemKhachHang();
                if (frth.ShowDialog() == DialogResult.Cancel)
                    XuatKhachHang();
            };

            btnTim.Name = "btnTimKH";
            btnTim.Text = "Tìm Khách Hàng";
            btnTim.Click += (s, args) => // khong vao thuc hien
            {
                frTimKhachHang frTim = new frTimKhachHang();
                frTim.ShowDialog();
                //  if (frTim.ShowDialog() == DialogResult.Cancel)
                //    frSuaThongTinKhachHang frsua1 = new frSuaThongTinKhachHang(gvChinh.CurrentRow.Cells[0].Value.ToString());
                //frsua1.ShowDialog();
                //  MessageBox.Show("sgsfdgfd");

            };

            btnSua.Name = "btnSua";
            btnSua.Text = "Cập nhật";
            btnSua.Click += (s, args) =>
            {
                frSuaThongTinKhachHang frsua = new frSuaThongTinKhachHang(gvChinh.CurrentRow.Cells[0].Value.ToString());
                if (frsua.ShowDialog() == DialogResult.Cancel)
                    XuatKhachHang();
            };

            btnXem.Name = "btnXem";
            btnXem.Text = "Xem chi tiết";
            btnXem.Click += (s, args) =>
            {
                frXemKhacHang frxem = new frXemKhacHang(gvChinh.CurrentRow.Cells[1].Value.ToString());
                frxem.ShowDialog();
            };
            btnXoa.Name = "btnXoa";
            btnXoa.Text = "Xóa khách hàng";
            btnXoa.Click += (s, args) =>
            {
                string MaKH2 = gvChinh.CurrentRow.Cells[0].Value.ToString();
                DialogResult kq = MessageBox.Show("Bạn có muốn xóa: " + MaKH2, "Thông báo", MessageBoxButtons.YesNo);
                if (kq == DialogResult.Yes)
                {
                    KhachHangBUS kh = new KhachHangBUS();
                    kh.XoaKhachHang(MaKH2);
                    XuatKhachHang();
                }
            };

            var MaKH = new DataGridViewTextBoxColumn();
            MaKH.HeaderText = "Mã Khách Hàng";
            MaKH.Name = "clMaKH";
            MaKH.Width = 80;

            var TenKH = new DataGridViewTextBoxColumn();
            TenKH.HeaderText = "Tên khách hàng";
            TenKH.Name = "clTenKH";
            TenKH.Width = 200;

            var TenCongTy = new DataGridViewTextBoxColumn();
            TenCongTy.HeaderText = "Tên Công Ty";
            TenCongTy.Name = "clTenCongTy";
            TenCongTy.Width = 100;

            var MaSoThue = new DataGridViewTextBoxColumn();
            MaSoThue.HeaderText = "Mã Số Thuế";
            MaSoThue.Name = "clMaSoThue";
            MaSoThue.Width = 100;

            var DiaChi = new DataGridViewTextBoxColumn();
            DiaChi.HeaderText = "Địa Chỉ";
            DiaChi.Name = "clDiaChi";
            DiaChi.Width = 80;

            var DienThoai = new DataGridViewTextBoxColumn();
            DienThoai.HeaderText = "Điện Thoại";
            DienThoai.Name = "clDienThoai";
            DienThoai.Width = 100;

            var Fax = new DataGridViewTextBoxColumn();
            Fax.HeaderText = "Fax";
            Fax.Name = "clFax";
            Fax.Width = 200;

            var Email = new DataGridViewTextBoxColumn();
            Email.HeaderText = "Email";
            Email.Name = "clEmail";
            Email.Width = 100;

            gvChinh.Columns.AddRange(new DataGridViewColumn[] { MaKH, TenKH, TenCongTy, MaSoThue, DiaChi, DienThoai, Fax, Email });
            XuatKhachHang();

        }

        private void phiếuNhậpHàngToolStripMenuItem_Click(object sender, EventArgs e)
        {
            PhieuNhapHang frm = new PhieuNhapHang();
            frm.ShowDialog();
        }

        private void phiếuXuấtHàngToolStripMenuItem_Click(object sender, EventArgs e)
        {
            PhieuXuatHang frm = new PhieuXuatHang();
            frm.ShowDialog();
        }

        private void hàngTồnKhoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ThongKeBan frm = new ThongKeBan();
            frm.ShowDialog();
        }
    }
}
